[組織ポリシー]Soft Deleteの保持期間などを設定できる組織ポリシーを試してみた
概要
Cloud StorageのSoft Delete機能に関して、保持期間などを組織単位で設定できる組織ポリシーとしてCloud Storage - soft delete policy retention duration in seconds(Cloud Storage - 削除(復元可能)ポリシーの保持期間(秒))
があります。
表示名 | 内容 | 制約 |
---|---|---|
Cloud Storage - soft delete policy retention duration in seconds | この制約は、この制約の対象の Cloud Storage バケットに設定された削除(復元可能)ポリシーの許容保持期間を定義します。この制約が適用されるバケットへの挿入、更新、パッチ適用オペレーションには、制約と一致する削除(復元可能)ポリシー期間が存在する必要があります。新しい組織のポリシーが適用されても、既存のバケットの削除(復元可能)ポリシーは変更されず有効なままです。デフォルトでは、組織のポリシーが指定されない場合、任意の期間の削除(復元可能)ポリシーを Cloud Storage バケットに設定できます。 | constraints/storage.softDeletePolicySeconds |
この組織ポリシーはSoft Deleteの保持期間や機能を無効にするかなどを設定できるポリシーとなります。そもそもSoft Deleteとはという方は以下の記事をご参照ください。
本記事では、上記の組織ポリシーに関してどんな設定ができるのか、設定した場合の動作はどんな感じなのか、を実際に試してみました。また、本ポリシーはリファレンスに以下の通り記載があるように既に作成済みのバケットには効果がありません。
新しい組織のポリシーが適用されても、既存のバケットの削除(復元可能)ポリシーは変更されず有効なままです
どんな設定ができるのか
以下が設定可能値のサマリです。
設定値 | 動作 |
---|---|
すべて許可(デフォルト) | バケット作成時、作成後に任意の期間を設定可能 |
すべて許可しない | バケット作成、作成後にいかなる期間も設定できません |
カスタム(許可) | バケット作成時、作成後に指定した期間を設定可能 |
カスタム(拒否) | バケット作成時、作成後に指定した期間を設定不可能 |
※すべて許可しない
を設定した場合、Soft Deleteのチェックボックスをオフにしようが期間に0日を設定しようがコマンドで作成しようが何をしても制約違反violates constraint 'constraints/storage.softDeletePolicySeconds'
となってしまいバケット作成ができませんでした。この設定値を用いる際はタグを条件にするなどしないといけないと考えます。Soft Deleteに設定できる値が0,最小値は604,800秒 - 最大7,776,000秒(7日-90日)の範囲となっていて全て許可しないを設定した場合でも値を設定しないということができないためと考えます。(gcludコマンドやREST APIで設定を省略すると604,800秒が設定される)
上記設定可能値を踏まえ、今回は以下のパターンを試してみました。
- Soft Deleteの無効を強制する(0日を許可)
- Soft Deleteの有効を強制する(0日を拒否)
- Soft Deleteの期間を指定する(7日を許可)
Soft Deleteの無効を強制する設定
以下の設定をします。プロジェクトに対して設定する前提です。
設定項目 | 設定値 |
---|---|
ポリシーのソース | 親のポリシーをオーバーライドする |
ポリシーの適用 | 置き換える |
ポリシーの値 | カスタム |
ポリシーの種類 | 許可 |
日数 | 0 |
0日(=Soft Deleteが無効)のみ許可することで、0日以外の設定値を設定できなくなります。
つまりはSoft Deleteを無効にすることが強制されるということです。
上記の設定後、バケット作成を行ってみます。まずはデフォルトのSoft Delete期間(筆者の環境では7日間)を設定して作成してみます。すると、以下の通り制約違反のメッセージが出力されバケットを作成することができません。
'604800' violates constraint 'constraints/storage.softDeletePolicySeconds'
任意の期間を設定できるオプション(Set custom retention duration)を見てみます。
0秒しか選択することができないようになっていました。参考までに組織ポリシー設定前は以下のとおり任意の期間を設定することができました。
上記より、0秒のみ設定可能とすることでSoft Deleteの無効を強制することができました。
※すでにSoft Deleteを有効にしているバケットがある状態で本設定をしたあとに、該当のバケットのSoft Delete期間編集画面を開くと以下のとおり0秒(Soft Delete無効)を選択できるのみでした。つまりはSoft Deleteを無効にするかどうかのみ選択可能ということです。
Soft Deleteの有効を強制する設定
以下の設定をします。プロジェクトに対して設定する前提です。
設定項目 | 設定値 |
---|---|
ポリシーのソース | 親のポリシーをオーバーライドする |
ポリシーの適用 | 置き換える |
ポリシーの値 | カスタム |
ポリシーの種類 | 拒否 |
日数 | 0 |
0日(Soft Deleteを無効)を拒否することで、必ずSoft Deleteが有効となる寸法です。
設定したら実際にバケットを作成してみて確認します。
まずは0日を設定してみます。
想定通り制約違反のメッセージが出力されて、作成できませんでした。
'0' violates constraint 'constraints/storage.softDeletePolicySeconds' '0' violates constraint 'constraints/storage.softDeletePolicySeconds'
続いて、0日以外の値を設定して作成してみます。今回は7日を設定しました。
今回は問題なくバケットを作成することができました。
バケットのSoft Delete期間編集画面でも以下の通り任意の期間を設定可能でした(0以外)。
Soft Deleteの期間を指定する設定
以下の設定をします。プロジェクトに対して設定する前提です。
設定項目 | 設定値 |
---|---|
ポリシーのソース | 親のポリシーをオーバーライドする |
ポリシーの適用 | 置き換える |
ポリシーの値 | カスタム |
ポリシーの種類 | 許可 |
日数 | 7 |
上記を設定すると、7日のみ設定可能になります。任意の期間を設定できるオプション(Set custom retention duration)をみてみると7日しか表示されません。
バケット作成後のSoft Delete期間編集画面でも7日しか表示されません。
まとめ
まずは3行まとめです。
- 0日の許可、拒否を活用することでSoft Deleteの無効有効を設定できる
- 既存のバケットには影響しない
- Soft Deleteに設定できる期間は0秒または604,800秒 〜 7,776,000秒の範囲(7日 〜 90日)
本ポリシーを活用することで、Soft Deleteの期間設定を統制することが可能なことがわかりました。検証環境であれば無効にしておくと、不要なデータ料金の発生を防ぐことができますし本番環境では有効を必須にしておくことで不慮のデータ損失を防ぐことができるかもしれません。組織ポリシーを設定する上では本ポリシーもぜひ検討したいところです。
この記事が、組織ポリシーで悩んでいる方の一助になれば嬉しく思います。それではまた。ナマステー
参考